//============================================================================
// Name        : deck.h
// Author      : awhuck
// Version     :
// Copyright   : 
// Description : The deck class is responsible for storing a stack of Cards. 
//               The deck class allows cards to be added, removed, sorted, shuffled, 
//               drawn, etc.     
//============================================================================

#ifndef DECK_H_
#define DECK_H_

#include <vector>
#include <string>

#include "card/card_info.h"
#include "card/card.h"

using namespace std;

class Deck
{
public:
	//Constructor
	Deck();
	
	//Deconstructor
	~Deck();
	
	//The size of the deck
	int GetSize() { return cards.size(); }
	
	//Adds one card to the deck to the bottom
	void Add(CardInfo* card);
	
	//Removes the top card from the deck
	CardInfo* Remove();
	
	//Adds many cards to the deck
	void Add(vector<CardInfo*> cards);
	
	//Removes all cards form the deck
	void RemoveAll();
	
	//Shuffles the deck
	void Shuffle();
	
private:
	vector<CardInfo*> cards;
};

#endif /*DECK_H_*/
